<?php

namespace app\common\job;

use app\admin\model\Admin;
use think\queue\Job;


/**
 * 单个任务(think-php)
 * Class SingleJob
 * @package app\common\job
 * @author ^2_3^王尔贝
 */
class SingleJob
{
    /**
     * 任务处理逻辑
     * @param Job $job
     * @param $data
     * @author ^2_3^王尔贝
     */
    public function fire(Job $job, $data){

        //...这里执行具体的任务......
        lo("[SingleJob]_".json_encode( $data ));

        //// admin list
        $adminModel = new Admin();
        $adminList = $adminModel->listOnly([]);
        lo('(^2_3^)$adminList '.json_encode($adminList));

        if ($job->attempts() > 3) {
            // 通过这个方法可以检查这个任务已经重试了几次了
        }

        // 如果任务执行成功后记得删除任务，不然这个任务会重复执行，直到达到最大重试次数后失败后，执行failed方法
        $job->delete();

        // 亦可以重新发布这个任务
//        $delay = 10;
//        $job->release($delay); // $delay为延迟时间;

    }

    /**
     * 任务失败逻辑
     * @param $data
     * @author ^2_3^王尔贝
     */
    public function failed($data){
        // ...任务达到最大重试次数后，失败了......
        lo('ThinkPHP think-queue SingleJob failed '.json_encode($data));
    }

}